Конфигурация загрузки с eMMC

Ранее мы использовали загрузку с TF-карты, что соответствует аппаратному интерфейсу SD0. Теперь, чтобы изменить способ загрузки и загружать систему с eMMC, необходимо внести некоторые изменения в предыдущую конфигурацию:

Изменение конфигурации Vivado

В блоковом дизайне Vivado необходимо включить SD1 (eMMC подключен к интерфейсу SD1 на основной плате):

изображение-20250723112004925

Продолжите последующие операции: "Generate Bitstream" --> "Export Hardware" --> Экспорт файла .xsa.

Изменение соответствующей конфигурации Petalinux

изображение-20250723113840031

Разметка qspi-flash:

изображение-20250723121624296

изображение-20250723120256821

изображение-20250723114031252

Загрузка uboot и образа из QSPI-Flash, загрузка rootfs из eMMC

(1) Запись BOOT.bin: выберите BOOT.bin в качестве файла образа, укажите смещение 0x0000000.

(2) Запись image.ub: сначала переименуйте image.ub в image.ub.bin; затем выберите image.ub.bin в качестве файла образа, укажите смещение 0x5A0000.

(3) Запись boot.src: сначала переименуйте boot.src в boot.src.bin; затем выберите boot.src.bin в качестве файла образа, укажите смещение 0xFE0000:

После запуска uboot загрузит скрипт boot.src. В этом скрипте будут выполнены соответствующие операции чтения, загрузки и bootm в зависимости от текущего режима загрузки.

изображение-20250725173954062

 

Примечание: поскольку образ загружается из qspi-flash, также приемлемо не копировать image.ub на первый раздел.

Выключите устройство, установите режим загрузки spi-flash и включите его. В этот момент uboot и ядро будут загружены из qspi-flash, а файловая система — из eMMC.

Анализ файла boot.src

После запуска U-Boot загружает скрипт boot.src. Этот скрипт выполняет соответствующие операции чтения, загрузки и загрузки в зависимости от текущего режима загрузки.

Ниже приведено содержимое файла boot.src по умолчанию:

Если режим загрузки — qspi, то и U-Boot, и образ будут загружены из флэш-памяти qspi.

Если режим загрузки — mmc0 или mmc1, то и U-Boot, и образ будут загружены из mmc.

Загрузка U-Boot из QSPI-Flash, загрузка образа и Rootfs из eMMC

Исходя из предыдущего анализа файла boot.src, если вы хотите загрузить U-Boot из флэш-памяти qspi и загрузить образ из mmc, вам необходимо изменить файл boot.src.

Поскольку файл boot.src сам по себе имеет проверку CRC, прямое изменение содержимого boot.src приведет к сбою проверки boot.src, что предотвратит запуск ядра.

boot.src генерируется из шаблона components/yocto/layers/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-zynq-scr/boot.cmd.generic, поэтому вы можете изменить файл boot.cmd.generic.

Однако файл boot.cmd.generic может быть автоматически перезаписан во время petalinux-config.

Разумный метод модификации — добавить файл u-boot-zynq-scr.bbappend и папку u-boot-zynq-scr в project-spec/meta-user/recipes-bsp/uboot/.

Исправление загрузочного скрипта U-Boot в Petalinux 2021.1

image-20250725174553471

Скопируйте файл components/yocto/layers/meta-xilinx/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-zynq-scr/boot.cmd.generic в папку u-boot-zynq-scr, затем измените этот файл: